﻿using System.Text;
using Dados.Interfaces;
using Dados.Classes_SQLServer;
using Dados.ValueObjects;
using System.ComponentModel;
using System.Collections.Generic;
namespace Negocios
{
    [DataObject]
    public class VendaPacoteBOMetodos
    {
        private IVendaPacote iVendaPacote;

        public VendaPacoteBOMetodos()
        {
            iVendaPacote = new VendaPacoteSQLServer();
        }
        [DataObjectMethodAttribute(DataObjectMethodType.Insert,true)]
        public bool inserir(VendaPacoteBO vpBO)
        {
            VendaPacoteVO vpVO = new VendaPacoteVO();
           
            vpVO.Cliente = vpBO.Cliente.Cpf;
            vpVO.Data = vpBO.Data;
            vpVO.Pacote = vpBO.Pacote.Id;
            vpVO.Pagamento = vpBO.Pagamento;
            vpVO.Usuario = vpBO.Usuario.Login;
            
            
            return (iVendaPacote.Insere(vpVO) == 1);

        }

        [DataObjectMethodAttribute(DataObjectMethodType.Update, true)]
        public bool atualizar(VendaPacoteBO vpBO)
        {
            VendaPacoteVO vpVO = new VendaPacoteVO();
            vpVO.Cliente = vpBO.Cliente.Cpf;
            vpVO.Data = vpBO.Data;
            vpVO.Id = vpBO.Id;
            vpVO.Pacote = vpBO.Pacote.Id;
            vpVO.Pagamento = vpBO.Pagamento;
            vpVO.Usuario = vpBO.Usuario.Login;

            
            return (iVendaPacote.Atualiza(vpVO) == 1);
        }

        [DataObjectMethodAttribute(DataObjectMethodType.Delete, true)]
        public bool remover(VendaPacoteBO vpBO)
        {

            return (iVendaPacote.Remove(vpBO.Id) == 1);

        }


        [DataObjectMethodAttribute(DataObjectMethodType.Select, false)]
        public VendaPacoteBO consultar(int id)
        {
            VendaPacoteVO vpVO = iVendaPacote.Consulta(id);
            VendaPacoteBO vpBO = new VendaPacoteBO();
            vpBO.Id = vpVO.Id;
            vpBO.Pagamento = vpVO.Pagamento;
            vpBO.Data = vpVO.Data;
            ClienteBOMetodos cBO = new ClienteBOMetodos();
            vpBO.Cliente = cBO.Consulta(vpVO.Cliente);
            UsuarioBOMetodos uBO = new UsuarioBOMetodos();
            vpBO.Usuario = uBO.Consulta(vpVO.Usuario);
            PacoteBOMetodos pBO = new PacoteBOMetodos();
            vpBO.Pacote = pBO.consultar(vpVO.Pacote);          
            
            return vpBO;
        }

        [DataObjectMethodAttribute(DataObjectMethodType.Select, true)]
        public List<VendaPacoteBO> consultarTodos()
        {
            List<VendaPacoteBO> iVendaPacoteBO = new List<VendaPacoteBO>();
            List<VendaPacoteVO> iVendaPacoteVO = (new VendaPacoteSQLServer()).ConsultaTodos();
            
            foreach (VendaPacoteVO vpVO in iVendaPacoteVO)
            {
                VendaPacoteBO vpBO = new VendaPacoteBO();
                
                vpBO.Id = vpVO.Id;
                vpBO.Pagamento = vpVO.Pagamento;
                vpBO.Data = vpVO.Data;
                ClienteBOMetodos cBO = new ClienteBOMetodos();
                vpBO.Cliente = cBO.Consulta(vpVO.Cliente);
                UsuarioBOMetodos uBO = new UsuarioBOMetodos();
                vpBO.Usuario = uBO.Consulta(vpVO.Usuario);
                PacoteBOMetodos pBO = new PacoteBOMetodos();
                vpBO.Pacote = pBO.consultar(vpVO.Pacote); 
                iVendaPacoteBO.Add(vpBO);

            }
            return iVendaPacoteBO;
        }
    }
}
